<?php
namespace Home\Controller;

use Think\Controller;
class QiuBaoController extends BaseController {
	
    /**
     * 测试函数
     * @return [type] [description]
     */
    public function test(){
        var_dump('恭喜您，成功访问QiuBaoController控制器！');
    }

    //获取用户openID接口
    public function getOpenid(){
        $code = $_POST['code'];
        //微信小程序appid
        $appid='wx5fd45ff70113dd53';
        //微信小程序secret
        $secret='6719252577ab7b79c40d45790b5aab9b';
        $sex = $_GET['sex'];		//小程序传来的用户性别
        $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
        $info = file_get_contents($url);//发送HTTPs请求并获取返回的数据，推荐使用curl
        $json = json_decode($info);//对json数据解码
        $arr = get_object_vars($json);
        $openid = $arr['openid'];
        $session_key = $arr['session_key'];
        echo json_encode($arr);
    }  

    // 获取小程序手机号api 接口，对应下面小程序 js
    public function getPhoneNumber()
    {   
 
       $encryptedData = $_POST['encryptedData'];
       $openId = $_POST['openId'];
       $iv = $_POST['iv'];
       $this->sessionKey=$_POST['session_key'];
       $res = $this->decryptData($encryptedData, $iv);
       // $res = json_decode($res);
       if($res->phoneNumber){
            // $res->phoneNumbe 就是手机号可以 写入数据库或者做其他操作
            $this->UserInformation_to_database($res->phoneNumber,$openId);
       }
       
       $this->ajaxReturn(['msg'=>$res,'status'=>'1']); //把手机号返回
    }

    public function UserInformation_to_database($phoneNumber,$openId){
        # code...
        // 实例化账单数据表
        $users = M('users');
       
        //构建SQL语句,添加之前先查找该用户是否存在
        $check_sql = "SELECT user_id FROM users WHERE user_id='$openId'";

        $result = $users->query($check_sql);
    
        if (count($result)==0){
            //构建添加用户的array
            $data = array();
            $data['user_id'] = $openId;
            $data['user_phone'] = $phoneNumber;
            $data['user_level'] = 0;

            $result = $users->add($data);
        }
    }
    
    public static $appid = 'wx5fd45ff70113dd53';  //小程序appid

        // 小程序解密
    public function decryptData($encryptedData, $iv)
    {
        if (strlen($this->sessionKey) != 24) {
            return self::$IllegalAesKey;
        }
        $aesKey=base64_decode($this->sessionKey);

        
        if (strlen($iv) != 24) {
            return self::$IllegalIv;
        }
        $aesIV=base64_decode($iv);

        $aesCipher=base64_decode($encryptedData);

        $result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);

        $dataObj=json_decode( $result );
        if( $dataObj  == NULL )
        {
            return self::$IllegalBuffer;
        }
        if( $dataObj->watermark->appid != self::$appid )
        {
            return self::$IllegalBuffer;
        }

        return  $dataObj;
        // return self::$OK;
    }

    //修改用户优惠卷数量接口
    public function modify_coupons_num(Type $var = null)
    {
        # code...
        // 实例化数据表
        $Message = M('userpaid');

        //设置where修改条件
        $where = array();
        $where['uid'] = 2;

        //要保存的数据
        $data = array();
        $data['ndrink'] = 1;

        //保存修改数据
        $result = $Message->where($where)->save($data);

        dump($result);


    }

    //测试修改订单支付状态
    public function modify_bill_state()
    {
        # code...
        // 实例化数据表
        $Message = M('bill');

        // 校验参数是否存在（验证bill_id）
        if (!$_POST['bill_id']) {

            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：bill_id';

            $this->ajaxReturn($return_data);
        }

        //设置where条件
        $where = array();
        $where['bill_id'] = $_POST['bill_id'];

        $data = array();
        $data['bill_status'] = "已支付";

        //修改订单状态
        $result = $Message->where($where)->save($data);

        if ($result) {
            # code...
            $result_date = array();
            $result_date['error_code'] = 0;
            $result_date['msg'] = '订单支付成功！';
    
            $this->ajaxReturn($result_date);
        } else {
            # code...
            $result_date = array();
            $result_date['error_code'] = 2;
            $result_date['msg'] = '订单支付失败！';
    
            $this->ajaxReturn($result_date);
        }
    }

    //测试删除接口
    public function delete_test(Type $var = null)
    {
        # code...
        // 实例化数据表
        $Message = M('userpaid');

        //设置where删除条件
        $where = array();
        $where['uid'] = 2;

        //删除数据
        $result = $Message->where($where)->delete();

        dump($result);


    }

    // --------------------------------------------------------------------------------

    //Find_GoodsInfo查找库存和单价表查找接口
    public function Find_GoodsInfo(Type $var = null)
    {
        # code...
        // 实例化账单数据表
        $Bill = M('goods');

        //设置where条件查询用户id在表bill中所有信息
        $where = array();
        $where['goods_type'] = '饮品';


        //查询数据
        $all_message = $Bill->where($where)->select();
        
        // dump($all_message);

        $return_data = array();
        $return_data['error_code'] = 0;
        $return_data['msg'] = '数据获取成功';
        $return_data['data'] = $all_message;

        $this->ajaxReturn($return_data);
    }
    

    //小程序端调用API：
    //Find_coupons用户优惠卷信息查找接口
    public function Find_Coupons(Type $var = null)
    {
        # code...
        // 实例化usercoupon数据表
        $M = M('usercoupon');

        $id = $_POST['user_id'];

        //设计SQL（要联合查询usercoupon表中的全部信息和coupon表中的coupon_content）
        $sql = "SELECT usercoupon.user_id,usercoupon.coupon_name,coupon.coupon_content,usercoupon.coupon_num,coupon.coupon_image
        FROM usercoupon,coupon WHERE (usercoupon.coupon_name=coupon.coupon_name AND user_id='$id')";
        //关于在PHP字符串中加入变量，用双引号括住，再在其中加已定义的变量即可

        //查询数据
        $all_message = $M->query($sql);
        $return_data = array();
        $return_data['error_code'] = 0;
        $return_data['msg'] = '数据获取成功';
        $return_data['data'] = $all_message;

        $this->ajaxReturn($return_data);
    }
    
    //Find_UserInfo通过查找用户表，获取用户各个服务使用信息
    public function Find_UserInfo(Type $var = null)
    {
        # code...
        // 校验参数是否存在（验证用户ID）
        if (!$_POST['user_id']) {
    
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：user_id';

            $this->ajaxReturn($return_data);
        }

        $user_id = $_POST['user_id'];
        $Bill = M('bill');

        $all_message = array();

        //设置订单查询条件：根据用户ID查找订单
        $sql = "SELECT COUNT(*) AS drink_time FROM goods,bill WHERE (goods.goods_id=bill.goods_id AND bill.user_id='$user_id' AND goods_type='饮品')";

        array_push($all_message,$Bill->query($sql));

        $sql = "SELECT COUNT(*) AS basketball_time FROM goods,bill WHERE (goods.goods_id=bill.goods_id AND bill.user_id='$user_id' AND goods_type='运动')";

        array_push($all_message,$Bill->query($sql));

        $sql = "SELECT COUNT(*) AS kit_time FROM goods,bill WHERE (goods.goods_id=bill.goods_id AND bill.user_id='$user_id' AND goods_type='医护')";

        array_push($all_message,$Bill->query($sql));

        // dump($all_message);

        // dump($Message->getLastSql());

        $return_data = array();
        $return_data['error_code'] = 0;
        $return_data['msg'] = '数据获取成功';
        $return_data['data'] = $all_message;

        $this->ajaxReturn($return_data);

    }

    //Find_Bill账单信息查找接口:查询账单信息表
    //小程序端根据(商品单价*商品数量)-(优惠卷价值*优惠卷使用数量)得出用户实际支付金额
    public function Find_Bill(Type $var = null)
    {
        # code...
        // 实例化账单数据表
        $Bill = M('bill');
        $id = $_POST['user_id'];

        //设计SQL（要联合查询bill表中的全部信息和device表中的device_name和coupon表中优惠券价值字段coupon_price） 用order by 降序排列输出结果才是最新的账单信息再最上面
        $sql = "SELECT bill.bill_id,device.device_name,device.device_location,goods.goods_price,bill.paid_time,goods.goods_type,bill.useTime,bill.bill_status,bill.coupon_name,bill.use_coupon FROM bill,device,goods WHERE (bill.device_id=device.device_id AND goods.goods_id=bill.goods_id AND user_id='$id') ORDER BY bill.paid_time DESC";

        //查询数据
        $all_message = $Bill->query($sql);
        // dump($all_message);
        // dump(count($all_message));
        
        for ($i=0; $i < count($all_message); $i++) { 
            // dump($all_message[$i]);
            $coupon_name = $all_message[$i]['coupon_name'];
            //SQL查询coupon_price
            $sql = "SELECT coupon_price FROM coupon WHERE coupon_name='$coupon_name'";
            $coupon_price = $Bill->query($sql)[0]['coupon_price'];
            $all_message[$i]['coupon_price'] = $coupon_price;
            // $all_message[$i]['bill_price'] = ($all_message[$i]['goods_price'] * $all_message[$i]['usetime']) - ($all_message[$i]['use_coupon'] * $coupon_price);
            // // dump($all_message[$i]);
        }
        
        // dump($all_message);
        $return_data = array();
        $return_data['error_code'] = 0;
        $return_data['msg'] = '数据获取成功';
        $return_data['data'] = $all_message;
        $this->ajaxReturn($return_data);
    }

    /**
     *   小程序端点击open开锁时会自动调用Open_Device_lock接口将服务器内设备锁状态lock_state置为1，即开锁命令信息发送，
     *   并调用Create_initial_order接口创建初始订单，其中包含有:
     *   user_id，device_id，paid_time，以及根据自定义规则生成的订单号（QB+user_id+device_id+解析为 Unix 的时间戳）
     *   账单中其他信息暂时置为null，等待ESP8266端进行完善账单信息的处理
     * @return void
     */
    //Open_Device_lock更新设备锁状态信息接口
    public function Open_Device_lock(Type $var = null)
    {
        # code...
        // 实例化设备数据表
        if (!$_POST['device_id']) {
            # code...
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：device_id';

            $this->ajaxReturn($return_data);
        }
        $device = M('device');
        
        //设计条件
        $where = array();
        $where['device_id'] = $_POST['device_id'];

        //状态数据
        $data = array();
        $data['device_lock'] = 1;

        //修改状态
        $result = $device->where($where)->save($data);

        // dump($all_message);

        $return_data = array();
        $return_data['error_code'] = 0;
        $return_data['msg'] = '设备：'.$_POST['device_id'].'开锁成功';
        $return_data['lock_state'] = $data['device_lock'];

        $this->ajaxReturn($return_data);
    }

    //Create_initial_order创建初始账单信息接口
    public function Create_initial_order()
    {
        // 校验参数是否存在
        if (!$_POST['user_id']) {
            
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：user_id';

            $this->ajaxReturn($return_data);
        }
        if (!$_POST['device_id']) {
            
            $return_data = array();
            $return_data['error_code'] = 2;
            $return_data['msg'] = '参数不足：device_id';

            $this->ajaxReturn($return_data);
        }
        // 设置要插入的数据
        $data = array();
        $data['user_id'] = $_POST['user_id'];
        $data['device_id'] = $_POST['device_id'];
        $data['paid_time'] = date('Y-m-d H:i:s');       //获取当前时间函数
        $data['bill_status'] = '未支付';

        //通过user_id对应的自增id确定唯一订单
        //设计SQL
        $sql = "SELECT id FROM users WHERE user_id="."'".$data['user_id']."'";
        $users = M('users');
        $id =  $users->query($sql)[0]['id'];

        //匹配时间格式为2016-02-16或2016-02-16 23:59:59前面为0时可以不写
        $patten = "/^\d{4}[\-](0?[1-9]|1[012])[\-](0?[1-9]|[12][0-9]|3[01])(\s+(0?[0-9]|1[0-9]|2[0-3])\:(0?[0-9]|[1-5][0-9])\:(0?[0-9]|[1-5][0-9]))?$/";
        if (preg_match($patten, $data['paid_time'])) {
            $timestro = strtotime($data['paid_time']);          //strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳（自 January 1 1970 00:00:00 GMT 起的秒数）
            $data['bill_id'] = 'QB'.(string)($id).(string)($_POST['device_id']).(string)($timestro);      //此处为球宝bill_id生成规则，连接字符串用.
        } else {
            $return_data = array();
            $return_data['error_code'] = 3;
            $return_data['msg'] = '订单ID生成失败';

            $this->ajaxReturn($return_data);
        }
        // //需要注意，此处生成的bill_id 没有设备唯一时间凭证
        // $data['bill_id'] = 'QB'.(string)($id).(string)($_POST['device_id']);      //此处为球宝bill_id生成规则，连接字符串用.

        // 实例化Bill表
        $Bill = M('bill');
        // 插入数据
        $result = $Bill->add($data);

        if ($result) {
            $return_data = array();
            $return_data['error_code'] = 0;
            $return_data['msg'] = '初始订单数据添加成功';
            $return_data['data'] = $data;

            $this->ajaxReturn($return_data);
        }else {
            $return_data = array();
            $return_data['error_code'] = 2;
            $return_data['msg'] = '初始订单数据添加失败';

            $this->ajaxReturn($return_data);
        }
    }

    // //ESP8266端开锁后上传唯一时间凭证
    // public function committime(Type $var = null)
    // {
    //     # code...
    //     //效验参数，有无唯一时间凭证
    //     if (!$_POST['time']) {
    //         # code...
    //         $return_data = array();
    //         $return_data['error_code'] = 1;
    //         $return_data['msg'] = '参数不足：time';

    //         $this->ajaxReturn($return_data);
    //     }
    //     //效验参数，有无设备ID
    //     if (!$_POST['device_id']) {
    //         # code...
    //         $return_data = array();
    //         $return_data['error_code'] = 1;
    //         $return_data['msg'] = '参数不足：device_id';
    //         $this->ajaxReturn($return_data);
    //     }

    //     $device_id = $_POST['device_id'];
    //     $time = $_POST['time'];
        
    //     //编写SQL语句对符合设备ID以外的字段有为null的数据，添加唯一时间凭证
    //     $sql = "SELECT";
    // }

    //删除账单接口接口
    public function delete_bill()
    {
        
        // 校验参数是否存在（验证账单ID）
        if (!$_POST['bill_id']) {
    
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：bill_id';

            $this->ajaxReturn($return_data);
        }

        $bill_id = $_POST['bill_id'];

        $Bill = M('bill');
        
        //先判断账单useTime（即用户有没有使用），用户要是没有使用就直接删除此订单
        $sql = "SELECT useTime FROM bill WHERE bill_id='$bill_id'";
        $useTime = $Bill->query($sql)[0]["usetime"];
        // dump($useTime[0]["usetime"]);
        if ($useTime==0) {
           # code...
           $where = array();
           $where['bill_id'] = $bill_id;
           $result = $Bill->where($where)->delete();

           //判断是否删除成功
           if ($result) {
               # code...
               $return_data = array();
               $return_data['error_code'] = 0;
               $return_data['msg'] = '成功删除用户未消费的订单';
   
               $this->ajaxReturn($return_data);
           } else {
               # code...
               $return_data = array();
               $return_data['error_code'] = 2;
               $return_data['msg'] = '删除用户未消费的订单失败';
   
               $this->ajaxReturn($return_data);
           }
       } else {
            # code...
            $return_data = array();
            $return_data['error_code'] = 3;
            $return_data['msg'] = "用户消费数量不为0";

            $this->ajaxReturn($return_data);
       }
    }

    //查找设备库存表
    public function Find_Device_inventory(){
        // 校验参数是否存在（验证设备ID）
        if (!$_POST['device_id']) {
            
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：device_id';

            $this->ajaxReturn($return_data);
        }

        $device_id = $_POST['device_id'];

        $Device = M('device');

        $sql = "SELECT deviceNum_drink FROM device WHERE device_id = '$device_id'";

        $result = $Device->query($sql)[0]['devicenum_drink'];

        if ($result >= 0) {
            # code...
            $return_data = array();
            $return_data['error_code'] = 0;
            $return_data['msg'] = '成功查找设备'.$device_id.'的库存：'.$result;
            $return_data['num'] = $result;

            $this->ajaxReturn($return_data);
        } else {
            # code...
            $return_data = array();
            $return_data['error_code'] = 2;
            $return_data['msg'] = '查询设备库存失败：'.$result;

            $this->ajaxReturn($return_data);
        }
    }

    //Complete_order完成账单信息接口
    public function Complete_order()
    {
        /**
         * 根据服务类型已经优惠卷等级自动为用户选择优惠卷，
         * 并将优惠卷名和优惠卷价格，优惠卷使用数量，将其更新数据库中的bill表，
         * 使用优惠卷数量信息设计SQL：先根据goods_id在goods表中对应的服务类型，根据找到的服务类型在coupon表中查找有无对于的优惠卷，
         * 返回符合条件的数组（符合条件的优惠卷和优惠卷等级）
         * 如果有的话再对比usercoupon表中有无对应上述数组中的优惠卷，如果有的话就根据等级高低更新bill表中的用户使用优惠卷名和数量
         * （数量默认初级用户是1张，查询用户的等级，用户等级越高，能同时使用的优惠卷数量越多）
         */

        // 校验参数是否存在（验证用户ID）
        if (!$_POST['user_id']) {
            
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：user_id';

            $this->ajaxReturn($return_data);
        }

        // 校验参数是否存在（验证账单ID）
        if (!$_POST['bill_id']) {
    
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：bill_id';

            $this->ajaxReturn($return_data);
        }

        $user_id = $_POST['user_id'];
        $bill_id = $_POST['bill_id'];
        $Bill = M('bill');

        $sql = "SELECT coupon_name FROM coupon WHERE (coupon_type=(SELECT goods_type FROM goods,bill WHERE (bill.goods_id=goods.goods_id AND coupon_name='无' AND bill_status='未支付' AND user_id='$user_id')))";
        $user_coupon_name = $Bill->query($sql);      //其查询结果是个数组，可能有一个值，可能有几个值,$coupon_name[i][coupon_name]
        // echo count($coupon_name);
        
        //判断goods_id的服务类型
        $sql = "SELECT goods_type FROM goods WHERE (goods_id=(SELECT goods_id FROM bill WHERE bill_id='$bill_id'))";
        $goods_type = $Bill->query($sql);
        $goods_type = $goods_type[0][goods_type];
        // dump($goods_type);
        // dump($goods_type[0][goods_type]);
        $sql = "SELECT coupon_name,coupon_level FROM coupon WHERE coupon_type='$goods_type'";
        $coupon_array = $Bill->query($sql);
        arsort($coupon_array);      //根据优惠卷等级排序，后面根据排序结果依次判断用户优惠卷表内有无此优惠卷
        $coupon_name = '您没有优惠卷哦~';
        for ($i=0; $i < count($coupon_array) ; $i++) { 
            for ($j=0; $j < count($user_coupon_name); $j++) { 
                if ($coupon_array[$i][coupon_name]==$user_coupon_name[$j][coupon_name]) {
                    $coupon_name = $coupon_array[$i][coupon_name];
                    break;
                }  
            }
        }
        // echo $coupon_name;   

        //获取用户符合条件的优惠卷拥有数量
        $sql = "SELECT coupon_num FROM usercoupon WHERE (coupon_name='$coupon_name' AND user_id='$user_id')";
        $coupon_num = $Bill->query($sql);
        // echo $coupon_num[0][coupon_num];
        $coupon_num = $coupon_num[0][coupon_num];
        // dump(!$coupon_num); 

        //先判断用户有无此优惠卷，有的话就执行下面的判断再更新，没有的话就直接更新无优惠卷
        if(count($coupon_name)==0 || !$coupon_num){
            $coupon_name = '您没有优惠卷哦~';
            $use_coupon = 0;
        }else{
            //获取用户等级（如果是VIP用户就可以同时使用2张劵，如果是普通用户只能同时使用1张劵）
            $sql = "SELECT user_level FROM users WHERE user_id=$user_id";
            $user_level = $Bill->query($sql);
            // dump($user_level);
            $user_level = $user_level[0][user_level];

            //如果查询到用户等级为1（VIP用户）,则可以最多使用2张优惠卷
            if ($user_level==1) {
                if ($coupon_num>=2) {
                    $use_coupon = 2;
                }else $use_coupon = 1;  
            } else if ($user_level==0){     //用户等级为0，限制使用1张优惠卷
                $use_coupon = 1;
            }
        }

        $data = array();
        $data['coupon_name'] = "$coupon_name";      //使用优惠卷名称
        $data['use_coupon'] = $use_coupon;          //使用数量

        $where = array();
        // $where['bill_id'] = $bill_id;
        // $where['coupon_name'] = '无';
        // $where['bill_status'] = '未支付';
        $where['bill_id'] = $bill_id;

        $result = $Bill->where($where)->save($data);
        // dump($result);


        //-------------------------------------更新用户优惠卷数量-------------------------------------
        if ($use_coupon) {
            //实例化usercoupon表
            $usercoupon = M('usercoupon');

            $sql = "SELECT coupon_num FROM usercoupon WHERE (user_id=$user_id AND coupon_name='$coupon_name')";

            $coupon_num = $usercoupon->query($sql)[0][coupon_num] - $use_coupon;

            //设置操作的数据条件
            $where = array();
            $where['user_id'] = $user_id;
            $where['coupon_name'] = $coupon_name;

            //如果用户使用后的优惠卷数量为0 ，则删除用户此优惠卷数据
            if (!$coupon_num) {
                $result_coupon = $usercoupon->where($where)->delete();
            } else {
                //如果不为0，则保存修改使用后的优惠卷数目
                $data = array();
                $data['coupon_num'] = $coupon_num;
                $result_coupon = $usercoupon->where($where)->save($data);
            }
        }
        //-------------------------------------更新用户优惠卷数量-------------------------------------


        if ($result) {
            $return_data = array();
            $return_data['error_code'] = 0;
            $return_data['msg'] = '查询订单是否可以使用优惠卷情况成功！并成功更新bill';
            $return_data['data'] = $data;

            $this->ajaxReturn($return_data);
        }else {
            $return_data = array();
            $return_data['error_code'] = 2;
            $return_data['msg'] = '快去看一下您的订单，有没有给您用优惠卷呢？';

            $this->ajaxReturn($return_data);
        }
    }

    //ESP8266端调用API：
    /**
     *   ESP8266端调用Find_Device_lock接口实时发送http请求至云服务器查询开锁信息，
     *   当请求开锁信息lock_state为1时，其内部执行开锁操作，并记录下此时传感器信息，
     *   当设备自动感应到用户关锁时，ESP8266将会自动调用Close_Device_lock接口将服务器内设备设备锁状态lock_state置为0，
     *   并再次记录此时的传感器信息，前后对比分析计算出需要完善的账单信息，
     *   并调用perfect_bill接口将其发送至服务器端，即生成完整的账单信息
     *   设备调用关锁后会调用Device_inventory设备库存接口
     * @return void
     */

    //Device_inventory返回设备库存接口
    public function Device_inventory(Type $var = null)
    {
        # code...
        // 校验参数是否存在（验证设备ID）
        if (!$_POST['device_id']) {
            # code...
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：device_id';

            $this->ajaxReturn($return_data);
        }
        // 校验参数是否存在（验证设备库存）
        if (!$_POST['deviceNum_drink']) {
            # code...
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：deviceNum_drink';

            $this->ajaxReturn($return_data);
        }

        //实例化设备数据表
        $device = M("device");

        //设计条件
        $where = array();
        $where['device_id'] = $_POST['device_id'];

        //状态数据
        $data = array();
        $data['deviceNum_drink'] = $_POST['deviceNum_drink'];

        //修改状态
        $result = $device->where($where)->save($data);


        if ($result) {
            # code...
            $return_data = array();
            $return_data['error_code'] = 0;
            $return_data['msg'] = $_POST['device_id']."号设备库存更新成功";
            $return_data['deviceNum_drink'] = $data['deviceNum_drink'];
    
            $this->ajaxReturn($return_data);
        } else {
            $return_data = array();
            $return_data['error_code'] = 2;
            $return_data['msg'] = "数据更新失败，可能是没有这个设备或者数据没变动";
            $this->ajaxReturn($return_data);
        }
    } 


    //Find_Device_Block查找设备锁状态信息接口
    public function Find_Device_lock(Type $var = null)
    {
        # code...
        // 实例化设备数据表
        $device = M('device');

        if (!$_POST['device_id']) {
            # code...
            $return_data = array();
            $return_data['error_code'] = 1;
            $return_data['msg'] = '参数不足：device_id';

            $this->ajaxReturn($return_data);
        }

        //设计条件
        $where = array();
        $where['device_id'] = $_POST['device_id'];

        //状态数据
        $Message = $device->where($where)->find();
        
        // dump($all_message);

        $return_data = array();
        $return_data['error_code'] = 0;
        $return_data['lock_state'] = $Message['device_lock'];

        $this->ajaxReturn($return_data);
    }

    //Close_Device_lock更新设备锁状态信息接口
    public function Close_Device_lock(Type $var = null)
    {
        # code...
        // 实例化设备数据表
        $device = M('device');

        //设计条件
        $where = array();
        $where['device_id'] = 1;

        //状态数据
        $data = array();
        $data['device_lock'] = 0;

        //修改状态
        $result = $device->where($where)->save($data);

        // dump($all_message);

        $return_data = array();
        $return_data['error_code'] = 0;
        $return_data['msg'] = '关锁成功';
        $return_data['lock_state'] = $data['device_lock'];

        $this->ajaxReturn($return_data);
    }

    //perfect_bill完善账单信息接口
    public function perfect_bill()
    {
        // 校验参数是否存在（验证设备ID）
        if (!$_POST['device_id']) {
            
            $return_data = array();
            $return_data['error_code'] = 9;
            $return_data['msg'] = '参数不足：device_id';

            $this->ajaxReturn($return_data);
        }
        //验证设备有无传入使用次数usetime参数(用户取冷饮数，篮球租赁用时)
        if ($_POST['useTime']==NULL) {
            
            $return_data = array();
            $return_data['error_code'] = 8;
            $return_data['msg'] = '参数不足：useTime';

            $this->ajaxReturn($return_data);
        }
        //验证设备有无传入商品id信息goods_id(服务器端会根据goods_id，useTime(时长，次数，数量)自动完善应付金额等信息)
        if (!$_POST['goods_id']) {
            
            $return_data = array();
            $return_data['error_code'] = 7;
            $return_data['msg'] = '参数不足：goods_id';

            $this->ajaxReturn($return_data);
        }
        //完善账单的商品信息
        //设置where条件根据device_id查询bill信息（这里的bill是指部分数据信息为null的账单，因为用户只允许有一个这样的未完善的数据的账单信息）
        $where = array();
        $where['device_id'] = $_POST['device_id'];
        $where['bill_status'] = '未支付';
        // 设置要插入的数据
        $data = array();
        $data['goods_id'] = $_POST['goods_id'];
        $data['useTime'] = $_POST['useTime'];

        // 实例化Bill表
        $Bill = M('bill');
        // 插入数据
        $result = $Bill->where("device_id=".$_POST['device_id']." AND useTime IS NULL")->save($data);

        // $sql = "UPDATE bill SET goods_id=".$data['goods_id'].",useTime=".$data['useTime']." WHERE (device_id=".$_POST['device_id']." AND useTime IS NULL)";

        // $result = $Bill->query($sql);

        // dump($result);

        if ($result) {
            $return_data = array();
            $return_data['error_code'] = 0;
            $return_data['msg'] = '完善订单数据成功';
            $return_data['data'] = $data;

            $this->ajaxReturn($return_data);
        }else {
            $return_data = array();
            $return_data['error_code'] = 2;
            $return_data['msg'] = '完善订单数据失败，可能已经完善，请查看数据端';

            $this->ajaxReturn($return_data);
        }
    }



}
